import MainService from "./MainService";

export default class MainApi {
  private service = new MainService().service;

  /**
   * 获取个人信息
   */
  public apiGetSelf() {
    return this.service.get("/account", {});
  }

  /**
   * 发送登录验证码
   * @param mobileNumber 手机号
   */
  public apiSendLoginSms(mobileNumber: string) {
    return this.service.post("/sms/send", { phone: mobileNumber, smsType: 1 });
  }

  /**
   * 验证码登录
   * @param mobileNumber 手机号
   * @param code 短信验证码
   */
  public apiSmsLogin(mobileNumber: string, code: string) {
    return this.service.post("/login/code", {
      phone: mobileNumber,
      smsCode: code
    });
  }

  /**
   * 手机号码密码登录
   * @param phone 手机号码
   * @param password 密码
   */
  public apiPhonePasswordLogin(phone: string, password: string) {
    return this.service.post("/login/phone/password", {
      password,
      phone
    })
  }

  /**
   * 微信授权登录
   * @param code 微信授权code
   */
  public apiWxCodeLogin(code: string) {
    return this.service.post("/login/wx/code", {
      code
    });
  }

  /**
   * 微信新账户首次绑定手机号码
   * @param option[mobileNumber] 手机号
   * @param option[smsCode] 短信验证码
   * @param option[wxInfoId] 微信用户唯一值
   */
  public apiBindMoblieNumber(option: {
    mobileNumber: string;
    smsCode: string;
    wxInfoId: string;
  }) {
    return this.service.put("/customers/set/phone/", {
      mobileNumber: option.mobileNumber,
      smsCode: option.smsCode,
      wxInfoId: option.wxInfoId
    })
  }

  /**
   * 新用户首次设置密码
   * @param password 新用户密码
   */
  public apiNewUserSetPassword(password: string) {
    return this.service.post("/customers/set/password", {
      password
    });
  }

  /**
   * 分页获取活动
   * @param page 页数
   * @param pageSize 每页个数
   */
  public apiGetActivitysByPage(page: number, pageSize: number) {
    return this.service.get("/activity", {
      page,
      size: pageSize
    })
  }

  /**
   * 获取活动详情
   * @param id 活动ID
   */
  public apiGetActivityDetail(id: string) {
    return this.service.get("/activity/" + id, {});
  }

  /**
   * 添加反馈信息
   * @param content 反馈内容
   */
  public apiPostFeedback(content: string) {
    return this.service.post("/feedback", { content });
  }

  /**
   * 添加反馈信息的评论
   * @param content 
   */
  public apiPostFeedbackComment(content: string) {
    return this.service.post("/feedback/comment", { content });
  }

  /**
   * 分页获取反馈信息的评论列表
   * @param page 页数
   * @param pageSize 每页个数
   */
  public apiGetFeedbackCommentsByPage(page: number, pageSize: number) {
    return this.service.get("/feedback/comment", {
      page,
      size: pageSize
    });
  }

  /**
   * 分页获取首页轮播图
   * @param page 页数
   * @param pageSize 每页个数
   */
  public apiGetBannersByPage(page: number, pageSize: number) {
    return this.service.get("/index/banner", {
      page,
      size: pageSize
    });
  }

  /**
   * 添加订单
   * @param productId 产品id
   * @param payMethod 支付方式 0: 支付宝; 1: 微信;
   * @param appointmentDate 预约日期
   */
  public apiPostOrder(productId: number, payMethod: number, appointmentDate: string) {
    return this.service.post("/order", {
      product_id: productId,
      paid_through: payMethod,
      appointment_date: appointmentDate
    });
  }

  /**
   * 分页获取订单
   * @param page 页数
   * @param pageSize 每页个数
   * @param status 订单状态 0: 未支付; 1: 已支付; 2: 已取消; 3: 已使用;
   */
  public apiGetOrdersByPage(page: number, pageSize: number, status: number) {
    return this.service.get("/pay/list", {
      page,
      size: pageSize,
      status
    })
  }

  /**
   * 获取产品分类
   */
  public apiGetProductCategorys() {
    return this.service.get("/product/category", {});
  }

  /**
   * 分页获取产品
   * @param page 页数
   * @param pageSize 每页个数
   * @param categoryId 分类ID
   */
  public apiGetProductsByPage(page: number, pageSize: number) {
    return this.service.get("/products/list", {
      page,
      size: pageSize,
      isOnline: 1
    });
  }

  /**
   * 获取产品详情
   * @param id 产品ID
   */
  public apiGetProductDetail(id: string) {
    return this.service.get("/products/details", { id });
  }

  /**
   * 分页获取攻略
   * @param page 页数
   * @param pageSize 每页个数
   */
  public apiGetStrategysByPage(page: number, pageSize: number) {
    return this.service.get("/strategy", {
      page,
      size: pageSize
    });
  }

  /**
   * 获取攻略详情
   * @param id 攻略id
   */
  public apiGetStrategyDetail(id: string) {
    return this.service.get("/strategy/" + id, {});
  }

  /**
   * 下单支付
   * @param data 
   * appointmentdAt*	string($date-time)
   * 预约时间
   * 
   * paidThrough	integer($int32)
   * 交易平台，0 alipay，1 wxapp
   *
   * productId*	integer($int32)
   * 产品Id
   *
   * quantity*	integer($int32)
   * 购买数量
   *
   * trade_type*	string
   * 交易类型 JSAPI:JSAPI支付 NATIVE:Native支付 APP:APP支付
   */
  public apiPushOrder(data: any) {
    return this.service.post("/pay/place/order", data);
  }

  /**
   * 根据订单ID获取订单
   * @param id 订单id
   */
  public apiGetOrderInfoById(id: any) {
    return this.service.get("/pay/order/info", {
      id
    });
  }

  /**
   * 新增车牌号
   * @param carNumber 车牌号
   */
  public apiPostCarNumber(carNumber: string) {
    return this.service.post("/customers/add/carNumber", {
      carNumber
    });
  }

  /**
   * 获取车牌号列表
   */
  public apiGetCarNumberList() {
    return this.service.get("/customers/carNumber/list", {
      page: 1,
      size: 10
    });
  }

  /**
   * 修改车牌号
   * @param id 车牌号id
   * @param carNumber 车牌号
   */
  public apiPutCarNumber(id: any, carNumber: string) {
    return this.service.put("/customers/update/carNumber", {
      id,
      carNumber
    });
  }

  /**
   * 删除车牌号
   * @param id 车牌号id
   */
  public apiDeleteCarNumber(id: any) {
    return this.service.delete("/customers/carNumber/delete?id=" + id, { id });
  }

  /**
   * 根据订单id获取二维码必要值
   * @param id 订单id
   */
  public apiGetOrderQrcode(id: any) {
    return this.service.get("/pay/order/qrcode", { id });
  }

  public apiWriteOff(qrCode: string) {
    return this.service.post("/api/order/cancellation/after/verification", {
      qrCode
    });
  }
}
